﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web.Management;


namespace dao.daos
{
    public class TiemposNadadoresDao : BaseDao
    {
        public TiemposNadadoresDao()
            : base("tiempos_nadadores", "id_tiempo_nadador", true)
        {
        }


        public void RegistrarResultadoDeUnaCompetencia(int idTorneo, IList<int> idNad, IList<TimeSpan> tpo, int idCompet, int idNadGanador, TimeSpan tpoGanador)
        {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = StringConexion;
            SqlTransaction trans = null;
            con.Open();
            trans = con.BeginTransaction();
            try
            {
                for (int i = 0; i < idNad.Count; i++)
                {
                    InsertarTiempoNad(idCompet, idNad[i],tpo[i], con, trans);
                    EditarCompetenciaTorneoMejorTpo(idTorneo, idCompet, idNadGanador, tpoGanador, con, trans);
                }
                trans.Commit();
                
            }
            catch (Exception e)
            {
                if (trans != null)
                    trans.Rollback();

                throw new SqlExecutionException("Error al cargar los resultados del torneo", e);
            }
            finally
            {
                if (con.State == ConnectionState.Open)
                    con.Close();
            }

        }


        public int InsertarTiempoNad(int idCom, int idNad, TimeSpan time, SqlConnection cn, SqlTransaction trans)
        {
            string sql = "Insert into tiempos_nadadores (id_competencia, id_nadador,tiempo_nadador) values (@IdCom, @IdNad,@tiempo); select @@identity;";
            SqlCommand cmd = new SqlCommand(sql, cn, trans);
            cmd.Parameters.Add(new SqlParameter("@IdCom", idCom));
            cmd.Parameters.Add(new SqlParameter("@IdNad", idNad));
            cmd.Parameters.Add(new SqlParameter("@tiempo", time));
            return Convert.ToInt32(cmd.ExecuteScalar());

        }


        public void EditarCompetenciaTorneoMejorTpo(int idTorn,int idCom, int idNad, TimeSpan time, SqlConnection cn, SqlTransaction trans)
        {
            string sql = "Update competencias_torneos set mejor_tiempo_comp = @tiempo, mejor_nadador = @IdNad where id_competencia = @idCom and id_torneo = @idTorn;";
            SqlCommand cmd = new SqlCommand(sql, cn, trans);
            cmd.Parameters.Add(new SqlParameter("@idTorn", idTorn));
            cmd.Parameters.Add(new SqlParameter("@IdNad", idNad));
            cmd.Parameters.Add(new SqlParameter("@tiempo", time));
            cmd.Parameters.Add(new SqlParameter("@idCom", idCom));
            cmd.ExecuteNonQuery();

        }

        //public int ObtenerNadadores(int idCom)
        //{
        //    string sql = "select * from nadadores ";
        //    SqlCommand cmd = new SqlCommand(sql, cn, trans);
        //    cmd.Parameters.Add(new SqlParameter("@IdCom", idCom));
        //    cmd.Parameters.Add(new SqlParameter("@IdNad", idNad));
        //    cmd.Parameters.Add(new SqlParameter("@tiempo", time));
        //    return Convert.ToInt32(cmd.ExecuteScalar());

        //}
        
      
    }
}
